package com.kpmg.datalake.common.service;

import com.baomidou.mybatisplus.service.IService;
import com.kpmg.datalake.common.enums.TopicEnum;
import com.kpmg.datalake.db.model.DbPrmsn;
import com.kpmg.datalake.db.model.Project;
import java.util.Set;

/**
 * @author Alex.zhao [alex.zhao@kpmg.com]
 * @since Created on azhao6 on 2018-08-20 18:08:44
 */
public interface IDbPrmsnService extends IService<DbPrmsn> {

  /**
   * 通过项目ID获取数据库数据源信息
   *
   * @param projectId 项目ID
   * @return DbPrmsn
   */
  DbPrmsn getDbPrmsnByProjectId(String projectId);

  /**
   * 通过项目信息 初始化该项目的用户信息
   *
   * @param project 项目信息
   * @return 数据库连接信息
   * @throws Exception Exception
   */
  DbPrmsn initDbPrmsnByProject(Project project);

  /**
   * 初始化数据库配置信息
   *
   * @param dbPrmsn dbPrmsn
   */
  void initDbPrmsnDatabase(DbPrmsn dbPrmsn);

  /**
   * 初始化行业化配置信息
   *
   * @param project 项目信息
   * @param isModule 是否初始化 执行industryModule 还是 industryHanler
   * @param topic topic 如果制定了topic 则使用指定的topic 如果没有指导则使用相关topic
   */
  void initIndustryInfo(Project project, Boolean isModule, TopicEnum topic);

  /**
   * 通过表名查询
   *
   * @param projectId 数据源
   * @param tableName 表名
   * @return 时间字段
   */
  Set<String> getDateColumn(String projectId, String tableName);
}
